/*
 *  Copyright 2013 National Institute of Advanced Industrial Science and Technology
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.sss.mapreduce.datatype;


/**
 * A Packable class that encapsulates a NULL object.
 */
public class PackableNull implements Packable {
  private static long SIZE = 0;

  public PackableNull() {}

  @Override
  public boolean equals(Object o) {
    return o instanceof PackableNull;
  }

  /**
   * Returns a hash code value for the object.
   *
   * NOTE: always throw @{link UnsupportedOperationException}.
   * see {@link Packable#hashCode}
   */
  @Override
  public int hashCode() {
    throw new UnsupportedOperationException("PackableNull does not support hashCode. Can't use PackableNull as 'key'.");
  }
  @Override
  public int slot() {
    throw new UnsupportedOperationException("PackableNull does not support slot. Can't use PackableNull as 'key'.");
  }

  @Override
  public long getRoughSize() {
    return SIZE;
  }

  @Override
  public String toString() {
    return "";
  }
}
